home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 April: Mac OS SDK / Dev.CD Apr 99 SDK1.toast / Development Kits / Interfaces&Libraries / Universal / Interfaces / PInterfaces / QuickdrawText.p < prev    next >
Encoding:
Text File  |  1998-08-17  |  10.0 KB  |  262 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        QuickdrawText.p
  3.  
  4.      Contains:    Quickdraw Text Interfaces.
  5.  
  6.      Version:    Technology:    Mac OS 8
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1983-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. }
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT QuickdrawText;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __QUICKDRAWTEXT__}
  27. {$SETC __QUICKDRAWTEXT__ := 1}
  28.  
  29. {$I+}
  30. {$SETC QuickdrawTextIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33. {$IFC UNDEFINED __MACTYPES__}
  34. {$I MacTypes.p}
  35. {$ENDC}
  36. {$IFC UNDEFINED __MIXEDMODE__}
  37. {$I MixedMode.p}
  38. {$ENDC}
  39.  
  40.  
  41. {$PUSH}
  42. {$ALIGN MAC68K}
  43. {$LibExport+}
  44.  
  45. { new CGrafPort bottleneck ("newProc2") function, used in Unicode Text drawing }
  46. FUNCTION StandardGlyphs(dataStream: UNIV Ptr; size: ByteCount): OSStatus; C;
  47.  
  48.  
  49. CONST
  50.                                                                 {  CharToPixel directions  }
  51.     leftCaret                    = 0;                            { Place caret for left block }
  52.     rightCaret                    = -1;                            { Place caret for right block }
  53.     kHilite                        = 1;                            { Direction is SysDirection }
  54.     smLeftCaret                    = 0;                            { Place caret for left block - obsolete  }
  55.     smRightCaret                = -1;                            { Place caret for right block - obsolete  }
  56.     smHilite                    = 1;                            { Direction is TESysJust - obsolete  }
  57.  
  58.                                                                 { Constants for styleRunPosition argument in PortionLine, DrawJustified, MeasureJustified, CharToPixel, and PixelToChar. }
  59.     onlyStyleRun                = 0;                            {  This is the only style run on the line  }
  60.     leftStyleRun                = 1;                            {  This is leftmost of multiple style runs on the line  }
  61.     rightStyleRun                = 2;                            {  This is rightmost of multiple style runs on the line  }
  62.     middleStyleRun                = 3;                            {  There are multiple style runs on the line and this is neither the leftmost nor the rightmost.  }
  63.     smOnlyStyleRun                = 0;                            {  obsolete  }
  64.     smLeftStyleRun                = 1;                            {  obsolete  }
  65.     smRightStyleRun                = 2;                            {  obsolete  }
  66.     smMiddleStyleRun            = 3;                            {  obsolete  }
  67.  
  68. { type for styleRunPosition parameter in PixelToChar etc. }
  69.  
  70. TYPE
  71.     JustStyleCode                        = INTEGER;
  72.     FontInfoPtr = ^FontInfo;
  73.     FontInfo = RECORD
  74.         ascent:                    INTEGER;
  75.         descent:                INTEGER;
  76.         widMax:                    INTEGER;
  77.         leading:                INTEGER;
  78.     END;
  79.  
  80.     FormatOrder                            = ARRAY [0..0] OF INTEGER;
  81.     FormatOrderPtr                        = ^FormatOrder;
  82. { FormatStatus was moved to TextUtils.i }
  83.     OffPairPtr = ^OffPair;
  84.     OffPair = RECORD
  85.         offFirst:                INTEGER;
  86.         offSecond:                INTEGER;
  87.     END;
  88.  
  89.     OffsetTable                            = ARRAY [0..2] OF OffPair;
  90. {$IFC TYPED_FUNCTION_POINTERS}
  91.     StyleRunDirectionProcPtr = FUNCTION(styleRunIndex: INTEGER; dirParam: UNIV Ptr): BOOLEAN;
  92. {$ELSEC}
  93.     StyleRunDirectionProcPtr = ProcPtr;
  94. {$ENDC}
  95.  
  96.     StyleRunDirectionUPP = UniversalProcPtr;
  97.  
  98. CONST
  99.     uppStyleRunDirectionProcInfo = $00000390;
  100.  
  101. FUNCTION NewStyleRunDirectionProc(userRoutine: StyleRunDirectionProcPtr): StyleRunDirectionUPP;
  102.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  103.     INLINE $2E9F;
  104.     {$ENDC}
  105.  
  106. FUNCTION CallStyleRunDirectionProc(styleRunIndex: INTEGER; dirParam: UNIV Ptr; userRoutine: StyleRunDirectionUPP): BOOLEAN;
  107.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  108.     INLINE $205F, $4E90;
  109.     {$ENDC}
  110. FUNCTION Pixel2Char(textBuf: Ptr; textLen: INTEGER; slop: INTEGER; pixelWidth: INTEGER; VAR leadingEdge: BOOLEAN): INTEGER;
  111.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  112.     INLINE $2F3C, $820E, $0014, $A8B5;
  113.     {$ENDC}
  114. FUNCTION Char2Pixel(textBuf: Ptr; textLen: INTEGER; slop: INTEGER; offset: INTEGER; direction: INTEGER): INTEGER;
  115.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  116.     INLINE $2F3C, $820C, $0016, $A8B5;
  117.     {$ENDC}
  118. FUNCTION PixelToChar(textBuf: Ptr; textLength: LONGINT; slop: Fixed; pixelWidth: Fixed; VAR leadingEdge: BOOLEAN; VAR widthRemaining: Fixed; styleRunPosition: JustStyleCode; numer: Point; denom: Point): INTEGER;
  119.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  120.     INLINE $2F3C, $8222, $002E, $A8B5;
  121.     {$ENDC}
  122. FUNCTION CharToPixel(textBuf: Ptr; textLength: LONGINT; slop: Fixed; offset: LONGINT; direction: INTEGER; styleRunPosition: JustStyleCode; numer: Point; denom: Point): INTEGER;
  123.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  124.     INLINE $2F3C, $821C, $0030, $A8B5;
  125.     {$ENDC}
  126. PROCEDURE DrawJustified(textPtr: Ptr; textLength: LONGINT; slop: Fixed; styleRunPosition: JustStyleCode; numer: Point; denom: Point);
  127.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  128.     INLINE $2F3C, $8016, $0032, $A8B5;
  129.     {$ENDC}
  130. PROCEDURE MeasureJustified(textPtr: Ptr; textLength: LONGINT; slop: Fixed; charLocs: Ptr; styleRunPosition: JustStyleCode; numer: Point; denom: Point);
  131.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  132.     INLINE $2F3C, $801A, $0034, $A8B5;
  133.     {$ENDC}
  134. FUNCTION PortionLine(textPtr: Ptr; textLen: LONGINT; styleRunPosition: JustStyleCode; numer: Point; denom: Point): Fixed;
  135.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  136.     INLINE $2F3C, $8412, $0036, $A8B5;
  137.     {$ENDC}
  138. PROCEDURE HiliteText(textPtr: Ptr; textLength: INTEGER; firstOffset: INTEGER; secondOffset: INTEGER; VAR offsets: OffsetTable);
  139.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  140.     INLINE $2F3C, $800E, $001C, $A8B5;
  141.     {$ENDC}
  142. PROCEDURE DrawJust(textPtr: Ptr; textLength: INTEGER; slop: INTEGER);
  143.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  144.     INLINE $2F3C, $8008, $001E, $A8B5;
  145.     {$ENDC}
  146. PROCEDURE MeasureJust(textPtr: Ptr; textLength: INTEGER; slop: INTEGER; charLocs: Ptr);
  147.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  148.     INLINE $2F3C, $800C, $0020, $A8B5;
  149.     {$ENDC}
  150. FUNCTION PortionText(textPtr: Ptr; textLength: LONGINT): Fixed;
  151.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  152.     INLINE $2F3C, $8408, $0024, $A8B5;
  153.     {$ENDC}
  154. FUNCTION VisibleLength(textPtr: Ptr; textLength: LONGINT): LONGINT;
  155.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  156.     INLINE $2F3C, $8408, $0028, $A8B5;
  157.     {$ENDC}
  158. PROCEDURE GetFormatOrder(ordering: FormatOrderPtr; firstFormat: INTEGER; lastFormat: INTEGER; lineRight: BOOLEAN; rlDirProc: StyleRunDirectionUPP; dirParam: Ptr);
  159.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  160.     INLINE $2F3C, $8012, $FFFC, $A8B5;
  161.     {$ENDC}
  162.  
  163.  
  164. PROCEDURE TextFont(font: INTEGER);
  165.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  166.     INLINE $A887;
  167.     {$ENDC}
  168. PROCEDURE TextFace(face: StyleParameter);
  169.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  170.     INLINE $A888;
  171.     {$ENDC}
  172. PROCEDURE TextMode(mode: INTEGER);
  173.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  174.     INLINE $A889;
  175.     {$ENDC}
  176. PROCEDURE TextSize(size: INTEGER);
  177.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  178.     INLINE $A88A;
  179.     {$ENDC}
  180. PROCEDURE SpaceExtra(extra: Fixed);
  181.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  182.     INLINE $A88E;
  183.     {$ENDC}
  184. PROCEDURE DrawChar(ch: CharParameter);
  185.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  186.     INLINE $A883;
  187.     {$ENDC}
  188. PROCEDURE DrawString(s: Str255);
  189.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  190.     INLINE $A884;
  191.     {$ENDC}
  192. PROCEDURE DrawText(textBuf: UNIV Ptr; firstByte: INTEGER; byteCount: INTEGER);
  193.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  194.     INLINE $A885;
  195.     {$ENDC}
  196. FUNCTION CharWidth(ch: CharParameter): INTEGER;
  197.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  198.     INLINE $A88D;
  199.     {$ENDC}
  200. FUNCTION StringWidth(s: Str255): INTEGER;
  201.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  202.     INLINE $A88C;
  203.     {$ENDC}
  204. FUNCTION TextWidth(textBuf: UNIV Ptr; firstByte: INTEGER; byteCount: INTEGER): INTEGER;
  205.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  206.     INLINE $A886;
  207.     {$ENDC}
  208. PROCEDURE MeasureText(count: INTEGER; textAddr: UNIV Ptr; charLocs: UNIV Ptr);
  209.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  210.     INLINE $A837;
  211.     {$ENDC}
  212. PROCEDURE GetFontInfo(VAR info: FontInfo);
  213.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  214.     INLINE $A88B;
  215.     {$ENDC}
  216. PROCEDURE CharExtra(extra: Fixed);
  217.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  218.     INLINE $AA23;
  219.     {$ENDC}
  220. PROCEDURE StdText(count: INTEGER; textAddr: UNIV Ptr; numer: Point; denom: Point);
  221.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  222.     INLINE $A882;
  223.     {$ENDC}
  224. FUNCTION StdTxMeas(byteCount: INTEGER; textAddr: UNIV Ptr; VAR numer: Point; VAR denom: Point; VAR info: FontInfo): INTEGER;
  225.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  226.     INLINE $A8ED;
  227.     {$ENDC}
  228.  
  229. {$IFC OLDROUTINENAMES }
  230. FUNCTION NPixel2Char(textBuf: Ptr; textLength: LONGINT; slop: Fixed; pixelWidth: Fixed; VAR leadingEdge: BOOLEAN; VAR widthRemaining: Fixed; styleRunPosition: JustStyleCode; numer: Point; denom: Point): INTEGER;
  231.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  232.     INLINE $2F3C, $8222, $002E, $A8B5;
  233.     {$ENDC}
  234. FUNCTION NChar2Pixel(textBuf: Ptr; textLength: LONGINT; slop: Fixed; offset: LONGINT; direction: INTEGER; styleRunPosition: JustStyleCode; numer: Point; denom: Point): INTEGER;
  235.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  236.     INLINE $2F3C, $821C, $0030, $A8B5;
  237.     {$ENDC}
  238. PROCEDURE NDrawJust(textPtr: Ptr; textLength: LONGINT; slop: Fixed; styleRunPosition: JustStyleCode; numer: Point; denom: Point);
  239.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  240.     INLINE $2F3C, $8016, $0032, $A8B5;
  241.     {$ENDC}
  242. PROCEDURE NMeasureJust(textPtr: Ptr; textLength: LONGINT; slop: Fixed; charLocs: Ptr; styleRunPosition: JustStyleCode; numer: Point; denom: Point);
  243.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  244.     INLINE $2F3C, $801A, $0034, $A8B5;
  245.     {$ENDC}
  246. FUNCTION NPortionText(textPtr: Ptr; textLen: LONGINT; styleRunPosition: JustStyleCode; numer: Point; denom: Point): Fixed;
  247.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  248.     INLINE $2F3C, $8412, $0036, $A8B5;
  249.     {$ENDC}
  250. {$ENDC}  {OLDROUTINENAMES}
  251.  
  252. {$ALIGN RESET}
  253. {$POP}
  254.  
  255. {$SETC UsingIncludes := QuickdrawTextIncludes}
  256.  
  257. {$ENDC} {__QUICKDRAWTEXT__}
  258.  
  259. {$IFC NOT UsingIncludes}
  260.  END.
  261. {$ENDC}
  262.